package com.book.oauth.server.client.vo;

import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * Description：
 * @Author： leo.xiong
 * @CreateDate： 2019/12/10 14:57
 * @Email： leo.xiong@suyun360.com
 * Version：1.0
 */
@Data
@ApiModel(value = "ClientVo", discriminator = "客户端Vo", subTypes = {ClientVo.class})
public class ClientVo implements Serializable {
    private static final long serialVersionUID = 8064750504099611640L;

    @ApiModelProperty(value = "客户端ID")
    private String clientId;

    @ApiModelProperty(value = "资源ID")
    private List<ClientVo> clientVoList = Lists.newArrayList();

    @ApiModelProperty(value = "第三方应用和授权服务器之间的安全凭证(可理解为密码)")
    private String clientSecret;

    @ApiModelProperty(value = "指定客户端申请的权限范围,可选值包括read,write,trust")
    private String scope;

    @ApiModelProperty(value = "此客户端可以使用的授权类型，默认为空,可选值包括authorization_code,password,refresh_token,implicit,client_credentials")
    private String authorizedGrantTypes;

    @ApiModelProperty(value = "客户端的重定向URI")
    private String webServerRedirectUri;

    @ApiModelProperty(value = "指定客户端所拥有的Spring Security的权限值")
    private String authorities;

    @ApiModelProperty(value = "设定客户端的access_token的有效时间值(单位:秒)，可选，若不设定值则使用默认的有效时间值(60 * 60 * 12, 12小时)")
    private Integer accessTokenValidity;

    @ApiModelProperty(value = "设定客户端的refresh_token的有效时间值(单位:秒)，可选，若不设定值则使用默认的有效时间值(60 * 60 * 24 * 30, 30天)")
    private Integer refreshTokenValidity;

    @ApiModelProperty(value = "设置用户是否自动Approval操作, 默认值为 false，可选值包括 true,false, read,write")
    private String autoapprove;

    @ApiModelProperty(value = "这是一个预留的字段,在Oauth的流程中没有实际的使用,可选，但若设置值，必须是JSON格式的数据")
    private String additionalInformation;
}
